/**
 * 
 */
package appStarshipPushups.client.form;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

/**
 * Cette classe représente la boîte de dialogue contenant de l'information à
 * propos du jeu.
 * @author Adam Labranche
 */
public class AboutDlg extends JDialog implements ActionListener
{
	public static final long serialVersionUID = 1L;
	// Le titre de la boîte de dialogue.
	private static final String ABOUT_TITLE = "À propos de Starship Pushup's";
	// Le chemin vers l'image représentant le logo du jeu.
	public static final String LOGO_PATH = "resources/logo.png";
	// La commande d'action du bouton OK.
	private static final String ACT_CLOSE = "close";
	// Le mémonique du bouton OK.
	private static final char MNEMONIC_OK = 'O';
	// La couleur de fond de la boîte de dialogue.
	private static final Color COLOR_BG = Color.black;
	// La couleur des textes de la boîte de dialogue.
	private static final Color COLOR_FG = Color.white;
	// Le nom des développeurs.
	private static final String CREDITS = "<html><p align=\"center\">Développé par<br>Adam Labranche<br>et<br>Kevin Arsenault</p></html>";
	
	/**
	 * Ce membre privé représente l'étiquette contenant le logo du jeu.
	 */
	private JLabel lblLogo = new JLabel();
	
	/**
	 * Ce membre privé représente l'étiquette contenant les noms des personnes
	 * qui ont travaillés sur le jeu.
	 */
	private JLabel lblCredits = new JLabel(AboutDlg.CREDITS);
	
	/**
	 * Ce membre privé représente le bouton permettant de fermer la boîte de
	 * dialogue.
	 */
	private JButton cmdOk = new JButton("OK");
	
	/**
	 * C'est le constructeur par défaut.
	 */
	public AboutDlg() 
	{
		super();
		this.init();
	}
	
	/**
	 * Cette fonction initialise toute l'interface de la boîte de dialogue.
	 */
	private void init()
	{
		this.setTitle(AboutDlg.ABOUT_TITLE);
		this.getContentPane().setLayout(new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS));
		this.setBackground(AboutDlg.COLOR_BG);
		this.getContentPane().setBackground(AboutDlg.COLOR_BG);
		this.setUndecorated(false);
		
		JPanel panOk = new JPanel();
		panOk.setLayout(new FlowLayout(FlowLayout.RIGHT));
		panOk.add(this.cmdOk);
		panOk.setOpaque(false);
		this.cmdOk.setActionCommand(AboutDlg.ACT_CLOSE);
		this.cmdOk.addActionListener(this);
		this.cmdOk.setMnemonic(AboutDlg.MNEMONIC_OK);
		this.cmdOk.setBackground(AboutDlg.COLOR_FG);
		this.cmdOk.setOpaque(false);
		
		this.lblLogo.setIcon(new ImageIcon(this.getClass().getResource(AboutDlg.LOGO_PATH)));
		this.lblLogo.setAlignmentX(CENTER_ALIGNMENT);
		
		this.lblCredits.setAlignmentX(CENTER_ALIGNMENT);
		this.lblCredits.setHorizontalAlignment(SwingConstants.CENTER);
		this.lblCredits.setForeground(AboutDlg.COLOR_FG);
				
		this.getContentPane().add(this.lblLogo);
		this.getContentPane().add(this.lblCredits);
		this.getContentPane().add(panOk);
		this.pack();
		this.setResizable(false);
				
		// On centre la fenêtre dans l'écran de l'utilisateur.
		this.setLocation((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 - this.getWidth() / 2),
				(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 - this.getHeight() / 2));
		this.setModalityType(ModalityType.APPLICATION_MODAL);
	}
	
    /**
     * Appelée lorsqu'une action se produit.
     */
    public void actionPerformed(ActionEvent e)
    {
    	String actCmd = e.getActionCommand();
    	if(actCmd.equals(AboutDlg.ACT_CLOSE))
    	{
    		this.dispose();
    	}
    }
}
